package models

import "github.com/shopspring/decimal"

// 支付订单
type MPayOrder struct {
	Id              int             `gorm:"type:int(10); primaryKey" json:"id"`
	Aid             int             `gorm:"type:int(10);" json:"aid"`           //账户ID
	Bid             int             `gorm:"type:int(10);" json:"bid"`           //商户ID
	Mid             int             `gorm:"type:int(10);" json:"mid"`           //会员ID
	Orderid         int             `gorm:"type:int(10);" json:"orderid"`       //订单Id
	Ordernum        string          `gorm:"type:varchar(255);" json:"ordernum"` //订单编号
	Title           string          `gorm:"type:varchar(255);" json:"title"`    //订单标题
	Money           decimal.Decimal `json:"money"`                              //订单金额
	Score           int             `gorm:"type:int(10);" json:"score"`         //积分支付
	Type            int             `gorm:"type:int(10);" json:"type"`          //1:服务订单 2:充值 3:商城订单
	Createtime      int             `gorm:"type:int(10);" json:"createtime"`    //
	Status          int             `gorm:"type:int(10);" json:"status"`        //0未支付 1已支付 2已取消
	Paynum          int             `gorm:"type:int(10);" json:"paynum"`        //支付数量
	Paytypeid       int             `gorm:"type:int(10);" json:"paytypeid"`     //2余额支付 1微信支付
	Paytype         string          `gorm:"type:varchar(255);" json:"paytype"`  //支付方式文本
	Paytime         int             `gorm:"type:int(10);" json:"paytime"`       //支付时间
	Paypics         string          `json:"paypics"`                            //
	TradeNo         string          `json:"trade_no"`                           //支付单号
	CreateOrderSign string          `json:"create_order_sign"`                  //支付签名
	Platform        string          `json:"platform"`                           //来源平台 wx微信小程序
}

func (table *MPayOrder) TableName() string {
	return "m_payorder"
}

// 支付设置
type MPaySet struct {
	ID                         int    `gorm:"type:int(10); primaryKey" json:"id"`
	Aid                        int    `gorm:"type:int(10);"json:"aid"`
	Type                       int    `gorm:"type:int(10);" json:"type"`                               //支付方式：1现金 2余额
	Name                       string `json:"name"`                                                    //支付名称
	SubName                    string `json:"sub_name"`                                                //备注名称
	PayType                    int    `gorm:"type:int(10);" json:"pay_type"`                           //支付类型: 101扫码 102在线支付
	State                      int    `json:"state"`                                                   //状态：1正常 2关闭
	NotifyUrl                  string `gorm:"type:varchar(255);" json:"notify_url"`                    //异步通知地址
	NotifyDaiUrl               string `gorm:"type:varchar(255);" json:"notify_dai_url"`                //代付异步通知地址
	ReturnUrl                  string `gorm:"type:varchar(255);" json:"return_url"`                    //商戶跳轉鏈接
	CancelUrl                  string `json:"cancel_url"`                                              //取消跳转链接
	AppId                      string `gorm:"type:varchar(255);" json:"app_id"`                        //app_id
	MerchantId                 string `gorm:"type:varchar(255);" json:"merchant_id"`                   //商户号
	AppSecret                  string `gorm:"type:varchar(255);" json:"app_secret"`                    //密钥
	MchCertificateSerialNumber string `gorm:"type:varchar(255);" json:"mch_certificate_serial_number"` //商户API证书序列号
	PayLogic                   int    `json:"pay_logic"`                                               //逻辑id
	CreatedAt                  int    `gorm:"type:int(10);" json:"created_at"`
	UpdatedAt                  int    `gorm:"type:int(10);" json:"updated_at"`
	Pic                        string `json:"pic"`
}

func (table *MPaySet) TableName() string {
	return "m_pay_set"
}

type PayCallbackNotification struct {
	AppID         string `xml:"appid" json:"appid"`
	BankType      string `xml:"bank_type" json:"bank_type"`
	CashFee       uint   `xml:"cash_fee" json:"cash_fee"`
	FeeType       string `xml:"fee_type" json:"fee_type"`
	IsSubscribe   string `xml:"is_subscribe" json:"is_subscribe"`
	MchID         string `xml:"mch_id" json:"mch_id"`
	NonceStr      string `xml:"nonce_str" json:"nonce_str"`
	OpenID        string `xml:"openid" json:"openid"`
	OutTradeNo    string `xml:"out_trade_no" json:"out_trade_no"`
	ResultCode    string `xml:"result_code" json:"result_code"`
	ReturnCode    string `xml:"return_code" json:"return_code"`
	Sign          string `xml:"sign" jsUpdateWhenRefundSuccesson:"sign"`
	TradeType     string `xml:"trade_type" json:"trade_type"`
	TotalFee      uint   `xml:"total_fee" json:"total_fee"`
	TransactionID string `xml:"transaction_id" json:"transaction_id"`
	Attach        string `xml:"attach" json:"attach"`
	TimeEnd       string `xml:"time_end" json:"time_end"` // 付款完成时间  20191030133525
}

func (r *PayCallbackNotification) IsOK() bool {
	return r.ReturnCode == "SUCCESS"
}
